package cn.itcast.bookstore.cart.domain;

import java.math.BigDecimal;
import java.util.Collection;
import java.util.LinkedHashMap;
import java.util.Map;

/**
 *购物车类 
 */
public class Cart {
	private Map<String,CartItem> map = new LinkedHashMap<String, CartItem>();
	/**
	 * 小计（计算合计）
	 */
	public double getTotal(){
		//所有条目计算之和
		BigDecimal total = new BigDecimal("0");
		
		for(CartItem cartItem : map.values()){
			BigDecimal subtotal = new BigDecimal(""+cartItem.getSubtotal());
			
			total = total.add(subtotal);
		}
		return total.doubleValue();
	}
	/**
	 *增加条目
	 */
	public void add(CartItem cartItem){
		if(map.containsKey(cartItem.getBook().getBid())){//判断原来车中是否存在该条目
			CartItem _cartItem = map.get(cartItem.getBook().getBid());//返回原条目
			_cartItem.setCount(_cartItem.getCount() + cartItem.getCount());//原条目加新条目数
			
			map.put(cartItem.getBook().getBid(), _cartItem);
		}else{
			map.put(cartItem.getBook().getBid(), cartItem);
		}
	}
	/**
	 *清空条目
	 */
	public void clear(){
		map.clear();
	}
	/**
	 *删除条目
	 */
	public void delete(String bid){
		map.remove(bid);
	}
	/**
	 *所有条目
	 */
	public Collection<CartItem> getCartItems(){
		return map.values();
	}
}
